#pragma once
#include <iostream>
#include <vector>

using namespace std;

typedef int INTEGER;
typedef int INDEX;
typedef string STRING;
typedef bool BOOLEAN;

class TNode{
private:
	BOOLEAN _isRoot;
	STRING _nodeType;
	INTEGER _index;
	TNode *_parent;
	//TNode *_leftChild;
	//TNode *_rightChild;
	TNode *_leftSibling;
	TNode *_rightSibling;
	INTEGER _procLine;
	INTEGER _level;
	TNode **_moreChildren;
	INTEGER _numOfMoreChild;

public:
	TNode();
	INTEGER getIndex();
	void setIndex(INTEGER num);
	INTEGER getNumOfMoreChild();
	void setProcLine(INTEGER lineNum);
	INTEGER getProcLine();
	void setLevel(INTEGER xx);
	INTEGER getLevel();
	void setNodeType(STRING type);
	STRING getNodeType();
	void setRoot();
	BOOLEAN checkRoot();
	void setParent(TNode *node);
	TNode* getParent();
	//void setLeftChild(TNode *node);
	//TNode* getLeftChild();
	void setLeftSibling(TNode *node);
	TNode* getLeftSibling();
	//void setRightChild(TNode *node);
	//TNode* getRightChild();
	void setRightSibling(TNode *node);
	TNode* getRightSibling();
	void insertMoreChildren(TNode* node);
	TNode** getMoreChildren();
};

